/*
 * @Author: atao
 * @Date: 2023-10-21 11:31:28
 * @LastEditTime: 2023-10-27 19:07:00
 * @FilePath: \三阶段项目\pili-pili-app\src\apis\ajax.ts
 */
import axios, { AxiosResponse, InternalAxiosRequestConfig } from "axios";

/** 因为图片的服务器和请求服务器一个地址，那么可以把这个地址做成一个全局变量 */
//根据npm命令的不同vite就会判断是是开发环境还是生产环境 例如 npm run dev就是开发环境  npm run build 就是生产环境
window.baseURL = import.meta.env.MODE === "development" ? '/apis' : 'http://www.yszhsc.com:15666';

const Ajax = axios.create({
    baseURL: window.baseURL
})
/**
 * 请求拦截
 */
Ajax.interceptors.request.use(function(config: InternalAxiosRequestConfig) {
    //返回promise，那么请求会被拦截
    // return Promise.resolve(config)
    // 返回配置对象请求就不会拦截，可以在这里传东西，比如给  config.headers.token 请求头加token
    return config
}) 
/** 封装请求为一个完整的请求方法 -- 解决async + await的问题(只能接收resolve) */
export default function request(req: PlRequest): Promise<any> {
    return new Promise(resolve => {
        Ajax.request({
            //不传默认为get
            method: req.method || 'get',
            url: req.url,
            params: req.params || {},
            data: req.data || {}
        }).then(function ({ data }: AxiosResponse) {
            resolve(data)
        }).catch(function (e: any) {
            resolve(e)
        })
    })
}